# language: zh-CN
# 需求ID: REQ-009
# SRS需求: 8.2 开发者工具 - 提供完整的开发工具链，包括IDE支持、可视化工具、调试工具等
# Feature ID: F-009
# 用户故事: US-054, US-055, US-056, US-057
功能: 开发者工具
  作为开发者
  我希望系统提供丰富的开发工具
  以便提升开发效率和调试体验

  背景:
    假设我是一个开发者
    并且我需要高效的开发工具
    并且我需要便捷的调试功能
    并且我希望获得良好的开发体验

  # US-054: 作为开发者，我希望IDE能够提供DSL语法高亮和智能提示，以便提高编码效率
  场景: DSL语法高亮和智能提示
    假设我在IDE中编写DSL模型
    当我输入DSL代码时:
      """
      entity User {
        id: string @primary
        name: string @required @maxLength(|
      }
      """
    那么IDE应该提供语法高亮:
      | 元素类型 | 示例 | 颜色 |
      | 关键字 | "entity", "@primary" | 蓝色 |
      | 类型 | "string" | 绿色 |
      | 注解 | "@required", "@maxLength" | 橙色 |
      | 字段名 | "id", "name" | 黑色 |
    并且应该提供智能代码补全:
      """
      // 当输入 @maxLength( 时，提示:
      [
        { "label": "50", "detail": "常用长度限制" },
        { "label": "100", "detail": "常用长度限制" },
        { "label": "255", "detail": "常用长度限制" },
        { "label": "1000", "detail": "长文本限制" }
      ]
      """
    并且应该提供实时语法检查
    并且应该显示字段类型提示

  场景: 模型可视化工具
    假设我需要查看模型关系图
    当我打开模型可视化工具时
    那么应该生成实体关系图:
      """
      ┌─────────────────┐       ┌─────────────────┐
      │      User       │       │     Order       │
      ├─────────────────┤       ├─────────────────┤
      │ + id: string    │◄─────►│ + id: string    │
      │ + name: string  │  1:N  │ + userId: string│
      │ + email: string │       │ + amount: number│
      │ + createdAt     │       │ + status: enum  │
      └─────────────────┘       └─────────────────┘
               │                         │
               │ 1:1                     │ N:M
               ▼                         ▼
      ┌─────────────────┐       ┌─────────────────┐
      │   UserProfile   │       │    Product      │
      ├─────────────────┤       ├─────────────────┤
      │ + userId: string│       │ + id: string    │
      │ + avatar: string│       │ + name: string  │
      │ + bio: text     │       │ + price: number │
      └─────────────────┘       └─────────────────┘
      """
    并且应该支持交互式导航
    并且应该显示字段详细信息
    并且应该支持关系类型标注
    并且应该支持图表导出（PNG、SVG、PDF）

  场景: 实时代码生成预览
    假设我修改了DSL模型
    当我保存模型文件时
    那么应该实时显示生成的代码预览:
      """
      // TypeScript 接口
      interface User {
        id: string;
        name: string;
        email: string;
        createdAt: Date;
        profile?: UserProfile;
        orders: Order[];
      }
      
      // 数据库Schema
      CREATE TABLE users (
        id VARCHAR(255) PRIMARY KEY,
        name VARCHAR(100) NOT NULL,
        email VARCHAR(255) UNIQUE NOT NULL,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
      );
      
      // API路由
      GET    /api/users
      POST   /api/users
      GET    /api/users/:id
      PUT    /api/users/:id
      DELETE /api/users/:id
      """
    并且应该支持多种代码格式切换
    并且应该高亮显示变更部分
    并且应该提供代码复制功能
    并且应该支持代码格式化

  # US-055: 作为开发者，我希望有可视化的模型管理和查询构建工具，以便更直观地操作数据
  场景: 交互式查询构建器
    假设我需要构建复杂查询
    当我打开查询构建器时
    那么应该提供可视化查询界面:
      """
      ┌─ 查询构建器 ─────────────────────────────────┐
      │ 实体: [User ▼]                              │
      │                                             │
      │ 条件:                                       │
      │ ┌─────────────────────────────────────────┐ │
      │ │ name     [包含 ▼] [张]        [+ 添加] │ │
      │ │ age      [大于 ▼] [18]        [+ 添加] │ │
      │ │ status   [等于 ▼] [active]    [+ 添加] │ │
      │ └─────────────────────────────────────────┘ │
      │                                             │
      │ 排序: created_at [降序 ▼]                   │
      │ 分页: 页码 [1] 每页 [20]                    │
      │                                             │
      │ 包含关联: ☑ profile ☑ orders               │
      └─────────────────────────────────────────────┘
      """
    并且应该实时生成查询代码:
      """
      // 生成的查询
      const users = await userRepo.find({
        where: {
          name: { $like: '%张%' },
          age: { $gt: 18 },
          status: 'active'
        },
        orderBy: { createdAt: 'DESC' },
        limit: 20,
        offset: 0,
        include: ['profile', 'orders']
      });
      
      // 对应的SQL
      SELECT u.*, p.*, o.*
      FROM users u
      LEFT JOIN user_profiles p ON u.id = p.user_id
      LEFT JOIN orders o ON u.id = o.user_id
      WHERE u.name LIKE '%张%'
        AND u.age > 18
        AND u.status = 'active'
      ORDER BY u.created_at DESC
      LIMIT 20 OFFSET 0;
      """
    并且应该支持查询执行和结果预览
    并且应该提供查询性能分析

  场景: 数据库管理界面
    假设我需要管理数据库
    当我打开数据库管理工具时
    那么应该提供数据库操作界面:
      """
      ┌─ 数据库管理 ─────────────────────────────────┐
      │ 连接状态: ● 已连接 postgresql://localhost   │
      │                                             │
      │ 表列表:                    操作:            │
      │ ├─ users (1,234 rows)     [查看] [编辑]     │
      │ ├─ orders (5,678 rows)    [查看] [编辑]     │
      │ ├─ products (890 rows)    [查看] [编辑]     │
      │ └─ user_profiles (1,234)  [查看] [编辑]     │
      │                                             │
      │ 迁移历史:                                   │
      │ ├─ ✓ 20240115_001_create_users              │
      │ ├─ ✓ 20240115_002_add_user_profile          │
      │ ├─ ✓ 20240115_003_create_orders             │
      │ └─ ⏳ 20240115_004_add_indexes (待执行)     │
      │                                             │
      │ [执行SQL] [导入数据] [导出数据] [备份]      │
      └─────────────────────────────────────────────┘
      """
    并且应该支持表数据的CRUD操作
    并且应该提供SQL执行器
    并且应该支持数据导入导出
    并且应该显示表结构和索引信息

  场景: API测试工具
    假设我需要测试生成的API
    当我打开API测试工具时
    那么应该提供API测试界面:
      """
      ┌─ API 测试工具 ───────────────────────────────┐
      │ 端点: [GET ▼] /api/users/:id                │
      │                                             │
      │ 路径参数:                                   │
      │ id: [user123]                               │
      │                                             │
      │ 查询参数:                                   │
      │ include: [profile,orders]                   │
      │                                             │
      │ 请求头:                                     │
      │ Authorization: Bearer [token...]            │
      │ Content-Type: application/json              │
      │                                             │
      │ [发送请求] [保存] [生成代码]                │
      │                                             │
      │ 响应 (200 OK, 45ms):                       │
      │ ┌─────────────────────────────────────────┐ │
      │ │ {                                       │ │
      │ │   "id": "user123",                      │ │
      │ │   "name": "张三",                       │ │
      │ │   "email": "zhang@example.com",         │ │
      │ │   "profile": { ... },                   │ │
      │ │   "orders": [ ... ]                     │ │
      │ │ }                                       │ │
      │ └─────────────────────────────────────────┘ │
      └─────────────────────────────────────────────┘
      """
    并且应该自动加载API文档
    并且应该支持请求历史记录
    并且应该提供响应数据格式化
    并且应该支持批量测试和断言

  # US-056: 作为开发者，我希望有完整的调试和性能分析工具，以便快速定位和解决问题
  场景: 性能分析工具
    假设我需要分析应用性能
    当我运行性能分析时
    那么应该提供性能分析报告:
      """
      ┌─ 性能分析报告 ───────────────────────────────┐
      │ 时间范围: 最近1小时                         │
      │                                             │
      │ 查询性能 Top 10:                           │
      │ ┌─────────────────────────────────────────┐ │
      │ │ 1. SELECT * FROM users WHERE...  125ms │ │
      │ │ 2. SELECT * FROM orders WHERE... 89ms  │ │
      │ │ 3. UPDATE users SET...           67ms  │ │
      │ └─────────────────────────────────────────┘ │
      │                                             │
      │ API响应时间:                               │
      │ ┌─────────────────────────────────────────┐ │
      │ │ GET /api/users        avg: 45ms         │ │
      │ │ POST /api/users       avg: 78ms         │ │
      │ │ GET /api/users/:id    avg: 23ms         │ │
      │ └─────────────────────────────────────────┘ │
      │                                             │
      │ 资源使用:                                   │
      │ CPU: ████████░░ 80%                        │
      │ 内存: ██████░░░░ 60%                       │
      │ 数据库连接: ████░░░░░░ 40%                 │
      │                                             │
      │ [详细报告] [导出] [设置告警]               │
      └─────────────────────────────────────────────┘
      """
    并且应该提供实时性能监控
    并且应该支持性能趋势分析
    并且应该提供优化建议
    并且应该支持性能基准测试

  场景: 代码生成器配置
    假设我需要自定义代码生成
    当我配置代码生成器时
    那么应该提供配置界面:
      """
      ┌─ 代码生成配置 ───────────────────────────────┐
      │ 目标语言: [TypeScript ▼]                    │
      │ 框架: [Express ▼]                          │
      │                                             │
      │ 生成选项:                                   │
      │ ☑ 实体类型定义                             │
      │ ☑ Repository类                             │
      │ ☑ Service类                                │
      │ ☑ Controller类                             │
      │ ☑ API路由                                  │
      │ ☑ 数据库迁移                               │
      │ ☑ 单元测试                                 │
      │                                             │
      │ 命名约定:                                   │
      │ 文件名: [kebab-case ▼]                     │
      │ 类名: [PascalCase ▼]                       │
      │ 方法名: [camelCase ▼]                      │
      │                                             │
      │ 输出目录:                                   │
      │ 实体: [src/entities]                       │
      │ 服务: [src/services]                       │
      │ 控制器: [src/controllers]                  │
      │                                             │
      │ [生成代码] [预览] [保存配置]               │
      └─────────────────────────────────────────────┘
      """
    并且应该支持自定义模板
    并且应该提供代码预览
    并且应该支持增量生成
    并且应该保存生成配置

  场景: 调试和日志查看器
    假设我需要调试应用问题
    当我打开调试工具时
    那么应该提供调试界面:
      """
      ┌─ 调试控制台 ─────────────────────────────────┐
      │ 过滤: [ERROR ▼] [最近1小时 ▼] [搜索...]      │
      │                                             │
      │ 日志流:                                     │
      │ ┌─────────────────────────────────────────┐ │
      │ │ 10:30:45 ERROR Database connection lost │ │
      │ │ 10:30:44 WARN  High memory usage: 85%   │ │
      │ │ 10:30:43 INFO  User login: user123      │ │
      │ │ 10:30:42 DEBUG Query executed: 45ms     │ │
      │ └─────────────────────────────────────────┘ │
      │                                             │
      │ 断点管理:                                   │
      │ ☑ UserService.createUser:25                │
      │ ☑ OrderController.processOrder:15          │
      │ ☐ PaymentService.charge:8                  │
      │                                             │
      │ 变量监视:                                   │
      │ user.id = "user123"                        │
      │ order.status = "pending"                   │
      │ payment.amount = 99.99                     │
      │                                             │
      │ [暂停] [继续] [单步执行] [清除日志]        │
      └─────────────────────────────────────────────┘
      """
    并且应该支持实时日志流
    并且应该提供日志搜索和过滤
    并且应该支持断点调试
    并且应该显示调用堆栈

  场景: 文档生成和预览
    假设我需要生成项目文档
    当我运行文档生成器时
    那么应该生成完整的项目文档:
      """
      # 项目文档
      
      ## 数据模型
      
      ### User 实体
      用户信息实体，存储用户基本信息。
      
      | 字段 | 类型 | 约束 | 描述 |
      |------|------|------|------|
      | id | string | @primary | 用户唯一标识 |
      | name | string | @required @maxLength(100) | 用户姓名 |
      | email | string | @unique @email | 邮箱地址 |
      | createdAt | datetime | @default(now) | 创建时间 |
      
      ### 关联关系
      - User 1:1 UserProfile (用户档案)
      - User 1:N Order (用户订单)
      
      ## API 接口
      
      ### 用户管理
      
      #### GET /api/users
      获取用户列表
      
      **查询参数:**
      - page: 页码 (默认: 1)
      - limit: 每页数量 (默认: 20)
      - search: 搜索关键词
      
      **响应示例:**
      ```json
      {
        "data": [
          {
            "id": "user123",
            "name": "张三",
            "email": "zhang@example.com"
          }
        ],
        "pagination": {
          "page": 1,
          "limit": 20,
          "total": 100
        }
      }
      ```
      """
    并且应该支持多种文档格式（Markdown、HTML、PDF）
    并且应该包含API文档
    并且应该生成数据模型图
    并且应该支持文档实时预览

  # US-057: 作为开发者，我希望有代码生成和项目脚手架工具，以便快速搭建项目结构
  场景: 项目脚手架生成
    假设我需要创建新项目
    当我使用项目生成器时
    那么应该提供项目模板选择:
      """
      ┌─ 项目生成器 ─────────────────────────────────┐
      │ 项目名称: [my-awesome-app]                  │
      │ 项目描述: [基于DSL-ORM的Web应用]            │
      │                                             │
      │ 技术栈选择:                                 │
      │ 后端: ● Node.js + Express                  │
      │       ○ Node.js + Fastify                  │
      │       ○ Python + FastAPI                   │
      │                                             │
      │ 前端: ● React + TypeScript                 │
      │       ○ Vue.js + TypeScript                │
      │       ○ 仅API (无前端)                     │
      │                                             │
      │ 数据库: ● PostgreSQL                       │
      │         ○ MySQL                            │
      │         ○ SQLite                           │
      │         ○ MongoDB                          │
      │                                             │
      │ 功能模块:                                   │
      │ ☑ 用户认证                                 │
      │ ☑ 权限管理                                 │
      │ ☑ 文件上传                                 │
      │ ☑ 邮件发送                                 │
      │ ☑ 缓存支持                                 │
      │ ☑ 日志记录                                 │
      │                                             │
      │ [生成项目] [预览结构] [保存模板]           │
      └─────────────────────────────────────────────┘
      """
    并且应该生成完整的项目结构:
      """
      my-awesome-app/
      ├── src/
      │   ├── models/          # DSL模型定义
      │   ├── entities/        # 生成的实体类
      │   ├── repositories/    # 数据访问层
      │   ├── services/        # 业务逻辑层
      │   ├── controllers/     # 控制器层
      │   ├── middlewares/     # 中间件
      │   └── utils/           # 工具函数
      ├── tests/              # 测试文件
      ├── docs/               # 文档
      ├── migrations/         # 数据库迁移
      ├── package.json
      ├── tsconfig.json
      ├── .env.example
      └── README.md
      """
    并且应该包含示例代码和配置
    并且应该生成开发文档
    并且应该支持自定义项目模板